<?php



//这里backend和模块文件夹名称相同，否则出现控制器不存在错误
namespace app\backend\controller;

use think\Controller;
use \think\Request;
use think\Loader;

class Login extends Controller {

    /**
     * 登入
     */
    public function index() {
            //等价于 return view() 自动定位模板文件：当前模块下view/与当前控制器名相同的index.html
            return $this->fetch();
        
    }
    
    /**
     * 处理登录
     */
    public function dologin() {
            //验证密码流程
            $username = input('post.username');
            $password = input('post.password');
            //虽然前端做了检查，但为了安全，后端依然要重新检查
            if (!$username) {
                $this->error('用户名不能为空');
            }
            if (!$password) {
                $this->error('密码不能为空');
            }
            $info = db('administrators')->field('uid,username,password,role')->where('username', $username)->find();
            
            if (!$info) {
                $this->error('用户名或密码不正确');
            }
            //在数据库中的密码不能用明文存储，直接用MD5存放攻击者也可能利用彩虹表进行选择明文攻击。
            //我们利用加盐的方法，使得攻击者破解密码几乎不可能。
            $salt=$info['username'];
            $password=md5($password.$salt);
            if ($password!= $info['password']) {
                $data=['time'=>date('Y-m-d H:i:s',time()),'ip'=>request()->ip(),'event'=>'登录','result'=>'失败','user'=>$username];
                db('logs')->insert($data);
                $this->error('用户名或密码不正确');
            }
            session('user_name', $info['username']);
            session('user_id', $info['uid']);
            $url='seniorAdministrator';
            if($info['role']!="高级管理员"){
                $url='normalAdministrator';
            }
            $data=['time'=>date('Y-m-d H:i:s',time()),'ip'=>request()->ip(),'event'=>'登录','result'=>'成功','user'=>$username];
            db('logs')->insert($data);
            $this->success('登入成功', $url.'/index');
    }

    /**
     * 登出
     */
    public function logout() {
        $data=['time'=>date('Y-m-d H:i:s',time()),'ip'=>request()->ip(),'event'=>'登出','result'=>'成功','user'=>session('user_name')];
        session('user_name', null);
        session('user_id', null);
        db('logs')->insert($data);
        $this->success('退出成功', 'login/index');
    }

}
